Angular Material এর MatInput কম্পোনেন্ট হল একটি উন্নত, স্টাইলড ইনপুট ফিল্ড যা Material Design গাইডলাইন অনুসরণ করে। এটি ইউজার ইন্টারফেসে ইনপুট সংগ্রহের জন্য ব্যবহার করা হয় এবং অ্যাঙ্গুলার অ্যাপ্লিকেশনের ইনপুট ফিল্ডের জন্য আধুনিক, রেসপন্সিভ, এবং কাস্টমাইজযোগ্য সমাধান প্রদান করে।
Angular Material এ ইনপুট ফিল্ড তৈরি করতে MatInput কম্পোনেন্ট ব্যবহার করা হয়। এটি সাধারণত mat-form-field কম্পোনেন্টের মধ্যে থাকে এবং এতে লেবেল, প্লেসহোল্ডার, এবং ইনপুট ধরনের অন্যান্য বৈশিষ্ট্য সংযুক্ত করা যায়।
প্রথমে MatInputModule আপনার অ্যাপ্লিকেশনে ইমপোর্ট করতে হবে। এটি app.module.ts ফাইলে করা হয়।
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
@NgModule({
imports: [
MatInputModule,
MatFormFieldModule
]
})
export class AppModule { }
এখন HTML ফাইলে mat-form-field এর মধ্যে matInput ডিরেকটিভ ব্যবহার করে ইনপুট ফিল্ড তৈরি করা যাবে।
<mat-form-field appearance="fill">
<mat-label>Username</mat-label>
<input matInput placeholder="Enter your username">
</mat-form-field>
এখানে:
mat-form-field
: এটি Material Design এর ইনপুট ফিল্ড কন্টেইনার।matInput
: এটি ইনপুট ফিল্ডে Material Design স্টাইল অ্যাপ্লাই করে।mat-label
: ইনপুট ফিল্ডের জন্য লেবেল।placeholder
: ইনপুট ফিল্ডে প্লেসহোল্ডার টেক্সট।টেক্সট ইনপুট সাধারণত ব্যবহার করা হয় ব্যবহারকারীর কাছ থেকে টেক্সট ইনপুট নেওয়ার জন্য।
<mat-form-field appearance="fill">
<mat-label>Full Name</mat-label>
<input matInput placeholder="Enter your full name">
</mat-form-field>
পাসওয়ার্ড ইনপুট তৈরি করতে type="password" ব্যবহার করতে হবে।
<mat-form-field appearance="fill">
<mat-label>Password</mat-label>
<input matInput placeholder="Enter your password" type="password">
</mat-form-field>
নম্বর ইনপুটের জন্য type="number" ব্যবহার করতে হবে।
<mat-form-field appearance="fill">
<mat-label>Age</mat-label>
<input matInput placeholder="Enter your age" type="number">
</mat-form-field>
ইমেইল ইনপুটের জন্য type="email" ব্যবহার করা হয়, যা ইমেইল ফর্ম্যাট ভ্যালিডেশন করে।
<mat-form-field appearance="fill">
<mat-label>Email</mat-label>
<input matInput placeholder="Enter your email" type="email">
</mat-form-field>
Angular Material ইনপুট ফিল্ডে ভ্যালিডেশন সহজে করা যায়। Angular Reactive Forms বা Template-driven Forms ব্যবহার করে ইনপুট ফিল্ডে ভ্যালিডেশন প্রয়োগ করা যায়।
<form [formGroup]="form">
<mat-form-field appearance="fill">
<mat-label>Email</mat-label>
<input matInput formControlName="email" required>
<mat-error *ngIf="form.get('email').hasError('required')">
Email is required
</mat-error>
</mat-form-field>
</form>
এখানে, required
ভ্যালিডেশন ব্যবহার করা হয়েছে এবং mat-error ট্যাগ ব্যবহার করে ত্রুটি দেখানো হয়েছে।
ইনপুট ফিল্ডকে অক্ষম (disabled) করতে disabled
অ্যাট্রিবিউট ব্যবহার করা যায়।
<mat-form-field appearance="fill">
<mat-label>Username</mat-label>
<input matInput placeholder="Enter your username" [disabled]="true">
</mat-form-field>
আপনি ইনপুট ফিল্ডের আকার ছোট করতে size="small" ব্যবহার করতে পারেন।
<mat-form-field appearance="fill">
<mat-label>Country</mat-label>
<input matInput placeholder="Enter your country" size="small">
</mat-form-field>
Angular Material ইনপুট ফিল্ডে focus এবং blur ইভেন্ট হ্যান্ডেল করতে পারেন।
<mat-form-field appearance="fill">
<mat-label>Username</mat-label>
<input matInput (focus)="onFocus()" (blur)="onBlur()">
</mat-form-field>
Angular Material এর MatInput কম্পোনেন্ট ব্যবহার করে আপনি সহজেই আধুনিক, রেসপন্সিভ, এবং স্টাইলিশ ইনপুট ফিল্ড তৈরি করতে পারেন। এটি Material Design গাইডলাইন অনুসরণ করে, যা আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেসকে আরও সুন্দর এবং ব্যবহারকারীর জন্য উপযোগী করে তোলে। MatInput কম্পোনেন্টে লেবেল, প্লেসহোল্ডার, টাইপ, ভ্যালিডেশন, এবং কাস্টমাইজেশন এর মতো শক্তিশালী বৈশিষ্ট্যগুলি সহজেই ব্যবহার করা যায়।
Angular Material একটি জনপ্রিয় UI লাইব্রেরি যা Material Design প্রিন্সিপল অনুসরণ করে তৈরি, এবং এটি ডেভেলপারদের জন্য আধুনিক, ব্যবহারকারী-বান্ধব ইনপুট ফিল্ডসহ অনেক প্রি-বিল্ট কম্পোনেন্ট সরবরাহ করে। Material Input Field Angular Material এর অন্যতম একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা সহজে কাস্টমাইজ করা যায় এবং বিভিন্ন ফর্মে ব্যবহার করা যায়।
Material Input ফিল্ড ব্যবহার করতে, আপনাকে Angular Material এর MatInputModule
ইমপোর্ট করতে হবে এবং তারপর HTML ফাইলে matInput
ডিরেকটিভ ব্যবহার করতে হবে।
প্রথমে Angular Material ইন্সটল করতে হবে:
ng add @angular/material
এটি ইনস্টল করার পরে, আপনার অ্যাপ্লিকেশনের app.module.ts ফাইলে MatInputModule
ইমপোর্ট করুন:
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
@NgModule({
imports: [
MatInputModule,
MatFormFieldModule
]
})
export class AppModule { }
MatFormFieldModule
ব্যবহার করা হয় যাতে ইনপুট ফিল্ডগুলোকে Material Design স্টাইল অনুসারে প্রদর্শন করা যায়।
এখন, HTML ফাইলে Material Input ফিল্ড ব্যবহার করতে পারেন। নিচে এর উদাহরণ দেওয়া হলো:
<mat-form-field appearance="fill">
<mat-label>First Name</mat-label>
<input matInput placeholder="Enter your first name" [(ngModel)]="firstName">
</mat-form-field>
এখানে:
mat-form-field
: Material Design এর ফর্ম ফিল্ড ব্যবহার করার জন্য।mat-label
: ইনপুট ফিল্ডের লেবেল।matInput
: ইনপুট ফিল্ডে Material Input ডিরেকটিভ ব্যবহার করা।placeholder
: ইনপুট ফিল্ডে প্লেসহোল্ডার টেক্সট।এছাড়া, appearance="fill"
ব্যবহার করে ইনপুট ফিল্ডের স্টাইল কাস্টমাইজ করা হয়।
Material Input Field সহজেই ভ্যালিডেশন সাপোর্ট করে। আপনি required
, minlength
, maxlength
, এবং pattern
এট্রিবিউট ব্যবহার করতে পারেন।
<mat-form-field appearance="fill">
<mat-label>Email</mat-label>
<input matInput placeholder="Enter your email" [(ngModel)]="email" required email>
<mat-error *ngIf="email.invalid && email.touched">
You must enter a valid email.
</mat-error>
</mat-form-field>
এখানে:
required
: ইনপুট ফিল্ডটি পূর্ণ হওয়া প্রয়োজন।email
: ইনপুট ফিল্ডটি ইমেল ফরম্যাটে হওয়া প্রয়োজন।mat-error
: এটি একটি এরর মেসেজ প্রদর্শন করবে যখন ইনপুট ভ্যালিডেশন ব্যর্থ হয়।Angular Material ইনপুট ফিল্ডের জন্য বিভিন্ন স্টাইলিং পছন্দ সরবরাহ করে, যেমন appearance
, floatLabel
, এবং color
।
<mat-form-field appearance="outline">
<mat-label>Username</mat-label>
<input matInput placeholder="Enter username" [(ngModel)]="username">
</mat-form-field>
এখানে, appearance="outline"
দ্বারা ইনপুট ফিল্ডের চারপাশে আউটলাইন তৈরি করা হয়েছে।
<mat-form-field appearance="fill">
<mat-label>Password</mat-label>
<input matInput placeholder="Enter your password" type="password" [(ngModel)]="password">
</mat-form-field>
<mat-form-field appearance="fill">
<mat-label>Search</mat-label>
<input matInput placeholder="Search" autocomplete="on">
</mat-form-field>
Angular Material এর Material Input Field ব্যবহার করার মাধ্যমে আপনি একটি আধুনিক, ব্যবহারকারীবান্ধব এবং অ্যাক্সেসিবল ইনপুট ফিল্ড তৈরি করতে পারেন। এটি বিভিন্ন ভ্যালিডেশন, টাইপোগ্রাফি এবং স্টাইলিং সাপোর্ট করে, যা ডেভেলপারদের জন্য কাজটি সহজ করে তোলে। Angular Material এর ইনপুট ফিল্ড গুলো একটি একক, সমন্বিত ডিজাইন সিস্টেমে কাজ করে এবং Material Design গাইডলাইন অনুযায়ী সঠিকভাবে উপস্থাপিত হয়।
Angular Material এর মাধ্যমে ফর্ম তৈরি করা খুবই সহজ এবং একে শক্তিশালী ফর্ম ভ্যালিডেশন ফিচার দিয়ে সম্পন্ন করা যায়। Angular এর Reactive Forms এবং Template-driven Forms ব্যবহারের মাধ্যমে ইনপুট ফিল্ডের ভ্যালিডেশন করা যায়। Angular Material এর MatInputModule কম্পোনেন্ট ব্যবহার করে আপনি সহজেই ফর্ম ইনপুট তৈরি করতে পারেন, এবং এর সাথে বিভিন্ন ধরনের ভ্যালিডেশন যুক্ত করতে পারেন।
এখানে Angular Material ইনপুট ফিল্ডের সাথে ফর্ম ভ্যালিডেশন করার বিভিন্ন ধাপ এবং কৌশল বর্ণনা করা হলো।
Angular Material এর MatInputModule ব্যবহার করে ফর্ম ইনপুট তৈরি করা হয়। এই ইনপুট ফিল্ডগুলির সাথে বিভিন্ন ভ্যালিডেশন যেমন Required, MinLength, MaxLength, Pattern Matching ইত্যাদি যুক্ত করা যায়।
Angular Material ইনপুটের সাথে ভ্যালিডেশন ব্যবহার করতে FormsModule এবং MatInputModule ইনপোর্ট করতে হবে।
import { NgModule } from '@angular/core';
import { MatInputModule } from '@angular/material/input';
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [MatInputModule, FormsModule],
})
export class AppModule {}
<form #form="ngForm">
<mat-form-field>
<mat-label>Name</mat-label>
<input matInput name="name" [(ngModel)]="name" required minlength="3" #name="ngModel">
<mat-error *ngIf="name.invalid && (name.dirty || name.touched)">
Name is required and must be at least 3 characters long.
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>Email</mat-label>
<input matInput name="email" [(ngModel)]="email" required email #email="ngModel">
<mat-error *ngIf="email.invalid && (email.dirty || email.touched)">
Please enter a valid email address.
</mat-error>
</mat-form-field>
<button mat-raised-button [disabled]="form.invalid">Submit</button>
</form>
এখানে mat-error
ব্যবহার করা হয়েছে, যা ফিল্ডের ভ্যালিডেশন ত্রুটি প্রদর্শন করবে যদি ইনপুটটি অবৈধ হয়।
Reactive Forms ব্যবহার করে আরও শক্তিশালী এবং কাস্টম ভ্যালিডেশন যুক্ত করা যায়। এখানে FormGroup
, FormControl
এবং Validators ব্যবহার করা হয়।
import { NgModule } from '@angular/core';
import { MatInputModule } from '@angular/material/input';
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [MatInputModule, ReactiveFormsModule],
})
export class AppModule {}
import { Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
name: ['', [Validators.required, Validators.minLength(3)]],
email: ['', [Validators.required, Validators.email]],
});
}
get name() { return this.form.get('name'); }
get email() { return this.form.get('email'); }
onSubmit() {
if (this.form.valid) {
console.log('Form Submitted', this.form.value);
}
}
}
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<mat-form-field>
<mat-label>Name</mat-label>
<input matInput formControlName="name">
<mat-error *ngIf="name.invalid && (name.dirty || name.touched)">
Name is required and must be at least 3 characters long.
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>Email</mat-label>
<input matInput formControlName="email">
<mat-error *ngIf="email.invalid && (email.dirty || email.touched)">
Please enter a valid email address.
</mat-error>
</mat-form-field>
<button mat-raised-button type="submit" [disabled]="form.invalid">Submit</button>
</form>
FormControl
ব্যবহার করে ফিল্ডের ভ্যালিডেশন নির্ধারণ করা হয়।এখানে mat-error
ব্যবহার করা হয়েছে, যা ইনপুটের ভুল বা অবৈধ স্টেট শনাক্ত করলে ত্রুটি বার্তা প্রদর্শন করে।
Angular Material এর সাথে কাস্টম ভ্যালিডেশনও ব্যবহার করা যেতে পারে, যেমন ফিল্ডের মানের উপর ভিত্তি করে ডাইনামিক ভ্যালিডেশন তৈরি করা।
import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
export function customValidator(): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
const forbidden = /admin/.test(control.value);
return forbidden ? { 'forbiddenName': { value: control.value } } : null;
};
}
এখন এই কাস্টম ভ্যালিডেটরটি ইনপুট ফিল্ডে ব্যবহার করতে পারেন:
this.form = this.fb.group({
username: ['', [Validators.required, customValidator()]]
});
Angular Material এর মাধ্যমে ইনপুট ফিল্ডের সাথে ফর্ম ভ্যালিডেশন করা খুবই সহজ এবং কার্যকরী। আপনি Template-driven Forms অথবা Reactive Forms ব্যবহার করে ফর্মের ভ্যালিডেশন করতে পারেন। Angular এর বিল্ট-ইন Validators এর পাশাপাশি কাস্টম ভ্যালিডেটর ব্যবহার করে আরও উন্নত ফর্ম ভ্যালিডেশন তৈরি করা সম্ভব। Angular Material এর কম্পোনেন্ট যেমন MatInputModule, MatFormFieldModule, এবং MatErrorModule এর মাধ্যমে ফর্মকে আকর্ষণীয় এবং ব্যবহারকারী-বান্ধব করা যায়।